// 泛型类示例
// 泛型类是一种在定义类时不指定具体数据类型，而是在使用类时才指定数据类型的类
// 通过在类名后使用<T>来定义泛型类，其中T是类型参数，可以在类中使用
// 泛型类的优点:
// 1. 代码复用：同一个类可以处理不同类型的数据
// 2. 类型安全：在编译时进行类型检查，避免运行时错误
// 3. 减少代码重复：不需要为每种数据类型都创建单独的类

// 下面是一个Container泛型类的示例
// 它可以存储任意类型的单个值，并提供了存取这个值的方法

class Container<T> {
  T _value;

  // 构造函数
  Container(this._value);

  // 获取值
  T getValue() {
    return _value;
  }

  // 设置值
  void setValue(T value) {
    _value = value;
  }
}

void main() {
  // 创建一个存储String类型的Container
  var stringContainer = Container<String>('Hello Dart');
  print(stringContainer.getValue()); // 输出: Hello Dart

  // 创建一个存储int类型的Container
  var intContainer = Container<int>(42);
  print(intContainer.getValue()); // 输出: 42

  // 修改容器中的值
  stringContainer.setValue('Hello Generic');
  print(stringContainer.getValue()); // 输出: Hello Generic

  // 创建一个存储List类型的Container
  var listContainer = Container<List<int>>([1, 2, 3, 4, 5]);
  print(listContainer.getValue()); // 输出: [1, 2, 3, 4, 5]
}
